﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMFacturacion.xaml
    /// </summary>
    public partial class FRMFacturacion : Window
    {
        public FRMFacturacion()
        {
            InitializeComponent();
        }

        private void dtgOrdenes_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        //
        // SINGLE CLICK EDITING
        //
        private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DataGridCell cell = sender as DataGridCell;
            if (cell != null && !cell.IsEditing && !cell.IsReadOnly)
            {
                if (!cell.IsFocused)
                {
                    cell.Focus();
                }
                DataGrid dataGrid = FindVisualParent<DataGrid>(cell);
                if (dataGrid != null)
                {
                    if (dataGrid.SelectionUnit != DataGridSelectionUnit.FullRow)
                    {
                        if (!cell.IsSelected)
                            cell.IsSelected = true;
                    }
                    else
                    {
                        DataGridRow row = FindVisualParent<DataGridRow>(cell);
                        if (row != null && !row.IsSelected)
                        {
                            row.IsSelected = true;
                        }
                    }
                }
            }
        }

        static T FindVisualParent<T>(UIElement element) where T : UIElement
        {
            UIElement parent = element;
            while (parent != null)
            {
                T correctlyTyped = parent as T;
                if (correctlyTyped != null)
                {
                    return correctlyTyped;
                }

                parent = VisualTreeHelper.GetParent(parent) as UIElement;
            }
            return null;
        }

        private void Facturacion_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }

        private void MenuVerDetalleOrdenes_Click(object sender, RoutedEventArgs e)
        {
            if (dtgOrdenes.SelectedItem == null)//FJRF - Si no hay materiales seleccionados hacemos lo siguiente
                return;//FJRF - Nos salimos

            produccion.vistamodelo.VMDetalleOrdenes dr = dtgOrdenes.SelectedItem as produccion.vistamodelo.VMDetalleOrdenes;//FJRF - Creamos un DataRowView con el item seleccionado
            String StrNroOrden = dr.nroord_eod;//FJRF - Traemos los datos seleccionados en las columnas que se necesitan

            FrmAyudasGenericas FrmAyudas = new FrmAyudasGenericas();//FJRF - Creamos una variable que maneje las propiedades del formulario que vamos a invocar
            FrmAyudas.pStrTituloVentana_Opcional = "DETALLE DE LA ORDEN: " + StrNroOrden;//FJRF - Le enviamos un titulo personalizado al formulario

            String StrConsulta = "SELECT UPPER(TRIM(NROORD_DOD)) AS NROORDEN, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "UPPER(TRIM(CODREF_DOD)) AS CODIGOREFERENCIA, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "UPPER(TRIM(NOMREF_REF)) AS NOMBREREFERENCIA, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "UPPER(TRIM(CODCOL_DOD)) AS CODIGOCOLOR, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "UPPER(TRIM(NOMCOL_COL)) AS NOMBRECOLOR, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "CODTAL_DOD AS TALLA, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "CANPRO_DOD AS CANTIDAD, ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "PREPRO_DOD AS PRECIO ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "FROM DETORDD, MAEREF, MAECOL  ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "WHERE CODREF_DOD = CODREF_REF ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "AND CODCOL_DOD = CODCOL_COL ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "AND NROORD_DOD = '" + StrNroOrden + "' ";//FJRF - Armamos la consulta
            StrConsulta = StrConsulta + "ORDER BY NOMREF_REF, NOMCOL_COL, CODTAL_DOD ";//FJRF - Armamos la consulta

            FrmAyudas.pStrConsultaSql_Obligatorio = StrConsulta;//FJRF - Armamos la consulta
            FrmAyudas.pStrCampoCodigoDeLaTabla_Obligatorio = "NROORDEN";//FJRF - Le decimos que este es el campo codigo o llave debe tener el nombre final osea el alias si es q lo tiene
            FrmAyudas.pStrBuscarPorDefectoEnElCampo_Opcional = "NOMBREREFERENCIA";//FJRF - Asignamos el dato a buscar
            FrmAyudas.pBooQuitarBotonRetornar_Opcional = true;//FJRF - Quitamos el boton de retornar datos
            FrmAyudas.pBooPonerBotonExportarExcel_Opcional = true;//FJRF - Activamos el boton para que se le permita la exportacion de datos a excel

            String StrColumnasParaFormato = "TALLA, CANTIDAD, PRECIO ";//FJRF - Columnas para formato numerico
            FrmAyudas.pStrNombreColumnasParaFormatoNumericoSeparadoPorComas_Opcional = StrColumnasParaFormato;//FJRF - Enviamos las columnas que se le van a hacer formato numerico

            FrmAyudas.ShowDialog();//FJRF - Invocamos el formulario
        }
    }
}
